package com.edu.aspect;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Date;

/**
 * @author:GoodBoy
 * @DATE:2024/11/10 14:00
 * @describe:
 */
public class MyAspect {
    Logger logger = LoggerFactory.getLogger(MyAspect.class);
    public void before(JoinPoint jt){

        logger.info("当前方法"+jt.getSignature().getName()+"开始执行于"+new Date());
//        System.out.println("当前方法"+jt.getSignature().getName()+"开始执行于"+new Date());
        System.out.println("执行了 前置通知");
    }

//    public void afterReturn(JoinPoint jt,Object result){
//
//        System.out.println("执行了 后置返回通知");
//        System.out.println(result);
//    }
//
//    public void afterThrowing(JoinPoint jt,Throwable e){
//
//        System.out.println("执行了 后置异常通知");
//    }
//
//    public void after(JoinPoint jt){
//        System.out.println("执行了 后置通知");
//    }

    public Object around(ProceedingJoinPoint jt){

        Object result = null;
        try {

            System.out.println("执行了 环绕通知的 前置通知");
            long time1=System.currentTimeMillis();
            result = jt.proceed();
            long time2=System.currentTimeMillis();
            logger.info("方法耗时为"+(time2-time1));
            System.out.println("我的"+result);
        } catch (Throwable e) {
            System.out.println("执行了 环绕通知的后置异常通知");
            e.printStackTrace();
        }finally {
            System.out.println("执行了 环绕通知的 后置通知");
        }
        System.out.println("执行了环绕通知的后置返回通知");
        return result;
    }
}
